Software applications are used by individuals and companies for a variety of purposes. Software applications may be distributed, such that a portion of the software executes at a user site, also known as “front-end,” and a portion of the software executes at a remote location, such as a server or a “back-end.” Further, software applications may provide a number of services, which may be used to perform a specific function. A service, such as a Web service or program, represents a piece of application functionality that can be found and accessed by other applications. A service may be self-describing because all the information on how to use the service can be obtained from the service itself, which may be centrally stored.
Services receive input parameters that are used to execute the services' functionality. For example, a service for retrieving a destination of a flight must receive an input parameter indicating the flight number. Using the flight number, the service, which may be located at a back-end, may determine the destination by, for example, searching a database.
Companies often use multiple software applications to handle their business needs. For example, a company may use a first software application to handle accounting, a second software application to retrieve information on customers, and a third software application to maintain records. Each software application may execute services at a front-end and a back-end. In certain cases, a user that is working with a first software application may want to use a service provided by a second software application. For example, a user that wants to generate a bill with an accounting system may want to lookup a customer's address using a service offered by a second software application.
Software applications and their services may be spread across different frameworks on a back-end. A framework is a system having one or more processors that can execute computer-readable program code to make classes of transactions accessible to a system or other frameworks. A first framework may be, for example, a stateful framework, which may include stateful software applications that maintain the context after each request to the back-end. A context may be the state of an application or service, and may be stored using, for example, cookies on a local computer. Assume that a user is entering data into a form, which may divided into several parts or “screens.” After a user enters data on the first screen, the user may select to move to the next screen and continue entering data. A stateful software application may store the entered data from several screens at the user's local site using cookies. The stateful software application may then transmit the entered data to a back-end server in a group.
A second framework may include stateless software applications that release the context after each request to the back-end. Assuming that a user enters data into a form including multiple screens, the context may be released after each screen. That is, after a user completes the first screen, the entered data may be transmitted to a back-end server for storing, but the entered data may not be stored locally.
Software applications that are provided by a first framework typically cannot execute services of software applications offered by a different framework. Software applications and the services implemented by the software applications require specific input parameters, such as the flight number to determine the flight destination. Moreover, the service may have a unique name and require that the input parameters be formatted in a particular manner. Further, each framework may use different service interfaces for accessing and executing the services. The service interfaces and frameworks may be based on different programming languages, such as Java and C++. Because the first software application running on a first framework is not aware or able to access the interface on the second framework, or the second software application's service name, required input parameters, and/or formatting of the required input parameters, the first software application typically cannot execute services of a second software application on a second framework.
Accordingly, a need exists for solutions that allow software applications to execute services of other software applications on a different framework.